package com.qixin.util.math;


import com.qixin.util.string.ObjectUtil;

import java.math.BigDecimal;

public class MathUtil {

	/**
	 * 
	 * @author 张子艺
	 * @date 2017年3月14日 下午2:59:04
	 * @version 1.0
	 * @description 3/3 返回1     4/3返回2   5/3返回2   6/3返回2   7/3返回3
	 *
	 * @param a
	 * @param b
	 * @return
	 */
	public static int getBigInt(int a,int b){
		int c=a/b;//1
		float d=a/Float.parseFloat(String.valueOf(b));//1.3333334
		if(c==d){
			return c;
		}else{
			return c+1;
		}
	}
	

	/**
	 * 获得四舍五入两位小数的数字格式
	 * @param number
	 * @return
	 */
	public static String get2Float45(String number){
		//NumberFormat nf = NumberFormat.getNumberInstance();
        //nf.setMaximumFractionDigits(2);
        //return nf.format(Double.parseDouble(number));
		
		//DecimalFormat df = new DecimalFormat("#.00");
		
		return String.format("%.2f", Double.parseDouble(number));
	}

	/**
	 * @author liuyong
	 * @Date 2017年6月9日 上午9:47:51
	 * @version 1.0.0
	 * @Description (获取两个整数相乘的积)
	 * @param multiplicator
	 * @param faciend
	 * @return
	 */
	public static int get2IntegerMultiply(Integer multiplicator,Integer faciend){
		if (multiplicator==null || faciend==null){
			return 0;
		}
		return multiplicator.intValue()*faciend.intValue();
	}

	/**
	 * @author liuyong
	 * @Date 2017年6月20日 下午4:29:34
	 * @version 1.0.0
	 * @Description (获取两个double的乘积，并可规定返回的小数点位数)
	 * @param multiplicator
	 * @param faciend
	 * @param digit
	 * @param defaultValue 为零时的默认值
	 * @param mode 四舍五入的策略
	 * @return
	 */
	public static double get2DoubleMultiply(Double multiplicator,Double faciend,int digit,int mode,double defaultValue){
		if (multiplicator==null || faciend==null){
			return defaultValue;
		}
		BigDecimal bg = new BigDecimal(multiplicator.doubleValue()*faciend.doubleValue());
		return bg.setScale(digit,mode).doubleValue();
	}

	/**
	 * @author liuyong
	 * @Date 2017年7月17日 下午4:02:44
	 * @version 1.0.0
	 * @Description (两个double值相除)
	 * @param divisor
	 * @param dividend
	 * @return
	 */
	public static Double get2DoubleDivide(double divisor,double dividend){
		if (dividend == 0){
			return 0d;
		}
		return divisor/dividend;
	}

	/**
	 * @author liuyong
	 * @Date 2017年7月17日 下午4:02:47
	 * @version 1.0.0
	 * @Description (两个double值相除,获得整数结果，如果余数大于0，返回结果加1)
	 * @param divisor
	 * @param dividend
	 * @return
	 */
	public static Integer get2DoubleDivideInteger(double divisor,double dividend){
		if (dividend == 0){
			return 0;
		}
		int value = (int) (divisor/dividend);
		if (divisor%dividend > 0 ){
			value++;
		}
		return value;
	}

	/**
	 * @author liuyong
	 * @Date 2017-10-16 17:53:33
	 * @version 1.0.0
	 * @Description (两个minuend值相减)
	 * @param substractor
	 * @param minuend
	 * @param minus true 可以为负数  false 返回最小值为零
	 * @return
	 */
	public static Integer get2IntegerMinus(Integer substractor,Integer minuend,boolean minus){
		if (ObjectUtil.isNullOrEmpty(substractor)){
			substractor = 0;
		}
		if (ObjectUtil.isNullOrEmpty(minuend)){
			minuend = 0;
		}
		Integer result = substractor - minuend;
		if (result<0&&!minus){
			result = 0;
		}
		return result;
	}

	public static Integer get2IntegerPlus(Integer substractor,Integer minuend,boolean minus){
		if (ObjectUtil.isNullOrEmpty(substractor)){
			substractor = 0;
		}
		if (ObjectUtil.isNullOrEmpty(minuend)){
			minuend = 0;
		}
		Integer result = substractor + minuend;
		if (result<0&&!minus){
			result = 0;
		}
		return result;
	}
}
